/*
* @Author DingWen
* @Description Mixins 案例三 混合顺序
* @Date 10:17 2021/2/7
**/

import 'dart:io';

mixin D1 {
  d() => print('d d1');
}

mixin D2 {
  d() => print('d d2');
}

class D with D1, D2 {}

void main() {
  D d = D();
  d.d();
  // D1 & D2 都有d() D2 覆盖了 D1

  XY xy = XY();
  // XY > Y > X > Z
  xy.a();

  // 混合后的类是超类的子类型
  print(xy is Z);
}

class X {
  a() {
    print('X a');
  }
}

class Y {
  a() => print('Y a');
}

class Z {
  a() => print('Z a');
}

class XY extends Z with X,Y{
  a() => print('XY a');
}
